/**
 * Author@ Cheng Feitian
 * Date: 2021-4-4
 * Description: 纯虚函数和抽象类
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

class Base
{
public:
    // 纯虚函数 在虚函数基础上 后边追加 = 0；
    //只要有一个纯虚函数 这个类称为抽象类
    // 抽象类特点
    // 1. 无法实例化对象
    // 2. 抽象类的子类 必须重写父类中的纯虚函数    否则也属于抽象类
    virtual void func() = 0;
};

class Son : public Base
{
public:
    virtual void func()
    {
        cout << "func()函数调用！" << endl;
    }
};

void test01()
{
    // Base b;      //抽象类无法实例化对象
    // new Base;    //抽象类无法实例化对象
    Son s; //子类必须重写父类中的纯虚函数，否则无法实例化对象
    //利用多态技术
    Base *base = new Son;
    base->func();
    delete base;
}

int main()
{
    test01();
    return 0;
}
